로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
6.배포 정리 | ✅ 저자: 이유정(박사)
준비사항 Python 가상환경만들기 MySQL 대신 PyMySQL사용 :
mysqlclient
컴파일 이슈 피하기 위해pymysql
사용.env
파일과--envvars
둘다 사용하는것이 좋습니다. .env예시
DB_NAME=restaurant_db
DB_USER=admin
DB_PASSWORD=bKkiQMw...
DB_HOST=airest-db.cfwgaqsu2fpk.ap-northeast-2.rds.amazonaws.com
DB_PORT=3306
S3_BUCKET=airest-dev
S3_REGION=ap-northeast-2
S3_CUSTOM_DOMAIN=airest-dev.s3.ap-northeast-2.amazonaws.com
AWS_STORAGE_BUCKET_NAME=airest-dev
AWS_ACCESS_KEY_ID=AKIA2CZVE...
AWS_SECRET_ACCESS_KEY=6e5ei9acVp...
ALLOWED_HOSTS=.elasticbeanstalk.com
DEBUG=False
SECRET_KEY=mCeJY8henHKouQElHUfrYEgqV...
requirements.txt
Django==4.2.7
djangorestframework==3.16.0
pillow==11.3.0
python-dotenv==1.1.1
boto3==1.39.9
django-storages==1.14.6
gunicorn>=23.0
PyMySQL>=1.0.2
정적/미디어 설정 (S3용)django-storages
, boto3
설치 후 설정 적용
GitHub 레포지토리 재정비 및 CI 테스트
배포전 마지막 수정된 내용에 반드시 커밋을 찍어서 push 해야 합니다.
MySQL 대신 pymysql 사용 settings.py
import pymysql
pymysql.install_as_MySQLdb()
필수 패키지 설치
pip install -r requirements.txt
pip freeze > requirements.txt
AWS 리소스 생성 순서
- RDS 생성 (MySQL)
- MySQL 엔진, 공용 액세스 허용 ✅
- 보안그룹: Elastic Beanstalk과 동일 VPC의 퍼블릭 서브넷 허용
- 생성 후 엔드포인트 복사해서
.env
에 DB_HOST로 설정 ==배포설정2 자료를 참고하세요.==
S3 버킷 생성
- S3 > 버킷 생성 (
airest-dev
) - 퍼블릭 액세스 허용 해제 (정적 파일만 저장)
- 버킷 정책 및 CORS 설정 필요 시 적용
IAM 사용자 생성 (S3 권한용)
- AWS 콘솔 > IAM > 사용자 생성
AmazonS3FullAccess
,AmazonRDSFullAccess
,AWSElasticBeanstalkFullAccess
- Access Key ID와 Secret Key 저장 →
.env
또는eb setenv
로 설정 ==배포설정2 자료를 참고하세요.==
Elastic Beanstalk 환경 생성
.elasticbeanstalk/config.yml
자동 생성:
eb init -p python-3.11 airest-dev
이 명령은 Elastic Beanstalk 애플리케이션을 초기화하고 .elasticbeanstalk/config.yml
파일을 자동 생성합니다.
환경생성: 터미널에서
eb create airest-dev \
--vpc.id vpc-078a5406b51b61a90 \
--vpc.securitygroups sg-0fa6d2c29e9cb8f63 \
--vpc.ec2subnets subnet-0aef092ddd766bb5f,subnet-0c9149f519d6231e1,subnet-012c0742f20a693d3,subnet-075377c222032771e \
--vpc.elbpublic \
--vpc.publicip \
--envvars DB_NAME=restaurant_db,DB_USER=admin,DB_PASSWORD=bKkiQMw0OAEdN0ruVfgG,DB_HOST=airest-db.cfwgaqsu2fpk.ap-northeast-2.rds.amazonaws.com,S3_BUCKET=airest-dev,S3_REGION=ap-northeast-2,S3_CUSTOM_DOMAIN=airest-dev.s3.ap-northeast-2.amazonaws.com,DEBUG=False,AWS_STORAGE_BUCKET_NAME=airest-dev,ALLOWED_HOSTS=.elasticbeanstalk.com,AWS_ACCESS_KEY_ID=AKIA2CZVEQ...,AWS_SECRET_ACCESS_KEY=6e5ei9acVpcPf3...
deploy전 최종배포
git add .
git commit -m "배포 준비 완료"
git push origin main
EB 배포
eb deploy
마이그레이션
source /var/app/venv/*/bin/activate
python manage.py migrate
python manage.py createsuperuser